package com.rd.teacher.jichao.day02.str;

import java.util.Arrays;

public class Test1 {

    public static void main(String[] args) {
        String str = "12395868389231734789438902340";
        String str1 = "12345678901245685324568864433468853323";
//        System.out.println(str.length());
//        int[] result1 = handle1(str);
//        System.out.println(Arrays.toString(result1));

        System.out.println("-----------");
//        int[] result = handle2(str);
//        System.out.println(Arrays.toString(result));

//        int[] result = handle3(str);
//        System.out.println(Arrays.toString(result));

        int[] result = handle4(str);
        System.out.println(Arrays.toString(result));

    }

    public static int[] handle1(String str) {
        int[] result = new int[10];

        // shirui
        // 声明每一个字符  判断字符在字符数组中出现的次数
        char a = '0';  // '1'
        for (int i = 0; i < 10; i++) {
            int count = 0;
            for (char c : str.toCharArray()) {
                if (a == c) {
                    count++;
                }
            }
//            System.out.println(a + "," + count);
            result[i] = count;
            a = (char) (a + 1);
        }

        // wangbo
//        char[] chars = s.toCharArray();
//        System.out.println(s);
//        for (int j = 0; j <= 9; j++) {
//            int count = 0;
//            for (int k = 0; k < chars.length; k++) {
//                if (j == chars[k] - 48) {
//                    count++;
//                }
//            }
//            System.out.println(count);
//        }

        // xuezhixin
//        for(int i = 0;i< 10;i++){
//            int num = 0;
//            for(int j = 0;j<c1.length;j++) {
//                if (i +'0' == c1[j]) {
//                    num++;
//                }
//                i1[i] = num;
//            }
//        }


        // fangzhou
//        for (int i = '0'; i <= '9'; i++) {
//            int count = 0;
//            for (int j = 0; j < c.length; j++) {
//                if (str.charAt(j) == i) {
//                    count++;
//                }
//            }
//            System.out.println(i - '0' + "出现" + count + "次");
//        }

        // liyingning
//        for (int j = 0; j <= 9; j++) {
//            for (int k = 0; k < strs.length() - 1; k++) {
//                if (j == (strs.charAt(k) - '0')){
//                    num++;
//                }
//            }
//            System.out.println(j + "出现了" + num + "次");
//            num = 0;
//        }

        return result;
    }

    // gaochenxi
    public static int[] handle2(String str) {
        int[] result = new int[10];

        //记录每个数字出现的次数
        //先把字符串变成字符数组
//        char[] chars = a.toCharArray();
//        for (int i = 0; i < chars.length; i++) {
//            System.out.print(" " + chars[i]);
//        }
//        System.out.println();

        int count = 0;//统计单个字符出现的次数
        //字符从头到位遍历一遍
        while (true) {
            int old_length = str.length();
            char c = str.charAt(0);

            //定义一个字符等于字符串第一个字符.每次统计完会将统计过的字符替换掉.
            String new_str = str.replaceAll(c + "", "");//定义一个新字符串将出现的字符
            //赋给一个新的字符串
            int new_length = new_str.length();
            count = old_length - new_length;//旧的长度减去新的长度就是字符出现的 次数
            System.out.println("字符" + c + "出现了" + count + "次");
            int index = c - '0';
            result[index] = count;

            str = new_str;//将替换并统计过次数的字符串赋给原来的字符串,便于下一次遍历
            if (str.length() == 0) {
                break;
            }
        }

        return result;
    }

    // lihongming
    public static int[] handle3(String str) {
        int[] result = new int[10];

        int len = str.length();
        for (int i = 0; i < len; i++) {
            switch (str.charAt(i)) {
                case '0':
                    result[0] += 1;
                    break;
                case '1':
                    result[1] += 1;
                    break;
                case '2':
                    result[2] += 1;
                    break;
                case '3':
                    result[3] += 1;
                    break;
                case '4':
                    result[4] += 1;
                    break;
                case '5':
                    result[5] += 1;
                    break;
                case '6':
                    result[6] += 1;
                    break;
                case '7':
                    result[7] += 1;
                    break;
                case '8':
                    result[8] += 1;
                    break;
                case '9':
                    result[9] += 1;
                    break;
                default:
                    System.out.println("输入的值不全为数字");
            }
        }
//        System.out.println(Arrays.toString(result));

        // wanghaixin
//        while (true) {
//            if (s1.isEmpty()) {
//                break;
//            }
//            char c = s1.charAt(0);
//            int index = c - '0';
//            a[index]++;
//            // 处理当前第一个字符后 丢掉  可以不丢掉的方式处理（从头到尾遍历）
//            s1 = s1.substring(1);
//        }
//
        return result;
    }


    // sunwenzhuo
    // 对数据进行排序 然后计算数字出现的起始位置和终止位置  计算位置之差得到出现的次数
    public static int[] handle4(String str) {
        int[] result = new int[10];

        char[] cArr = str.toCharArray();
        Arrays.sort(cArr);
        String newStr = new String(cArr);

        char[] newArr = newStr.toCharArray();
        int max = newArr[newArr.length - 1] - '0';
        System.out.println(max);
        for (int i = 0; i <= max; i++) {
            char iChar = (char)(i + '0');
            int last = newStr.lastIndexOf(iChar);
            int first = newStr.indexOf(iChar);
//            System.out.println((last - first) + 1);
            if (first != -1) {
                result[i] = last - first + 1;
            }
        }

        return result;
    }
}
